The present invention relates generally to computer data storage, and more particularly, to a snapshot copy facility for a data storage system that permits continued host read/write access to data storage that has been snapshot copied.
Snapshot copies of a data set such as a file or storage volume have been used for a variety of data processing and storage management functions such as storage backup, transaction processing, and software debugging.
A known way of making a snapshot copy is to respond to a snapshot copy request by invoking a task that copies data from a production data set to a snapshot copy data set. A host processor, however, cannot write new data to a storage location in the production data set until the original contents of the storage location have been copied to the snapshot copy data set.
Another way of making a snapshot copy of a data set is to allocate storage to modified versions of physical storage units, and to retain the original versions of the physical storage units as a snapshot copy. Whenever the host writes new data to a storage location in a production data set, the original data is read from the storage location containing the most current version, modified, and written to a different storage location. This is known in the art as a xe2x80x9clog structured filexe2x80x9d approach. See, for example, Douglis et al. xe2x80x9cLog Structured File Systems,xe2x80x9d COMPCON 89 Proceedings, Feb. 27-Mar. 3, 1989, IEEE Computer Society, p. 124-129, incorporated herein by reference, and Rosenblum et al., xe2x80x9cThe Design and Implementation of a Log-Structured File System,xe2x80x9d ACM Transactions on Computer Systems, Vol. 1, February 1992, p. 26-52, incorporated herein by reference.
Backup and restore services are a conventional way of reducing the impact of data loss from the network storage. To be effective, however, the data should be backed up frequently, and the data should be restored rapidly from backup after the storage system failure. As the amount of storage on the network increases, it is more difficult to maintain the frequency of the data backups, and to restore the data rapidly after a storage system failure.
In the data storage industry, an open standard network backup protocol has been defined to provide centrally managed, enterprise-wide data protection for the user in a heterogeneous environment. The standard is called the Network Data Management Protocol (NDMP). NDMP facilitates the partitioning of the backup problem between backup software vendors, server vendors, and network-attached storage vendors in such a way as to minimize the amount of host software for backup.
The current state of development of NDMP can be found at the Internet web site for the NDMP organization. Details of NDMP are set out in the Internet Draft Document by R. Stager and D. Hitz entitled xe2x80x9cNetwork Data Management Protocolxe2x80x9d document version 2.1.7 (last update Oct. 12, 1999) incorporated herein by reference.
In practice, it has been found that the technique of storing data in logical storage volumes having relatively permanent physical storage locations in a data storage system has a competitive advantage over the more complex log structured file approach. For providing storage backup, however, the relatively permanent physical storage locations of the logical storage volumes has introduced a significant delay when host write access to storage locations containing original data is delayed until the original data are transmitted to a backup storage device. It has been found that this delay can be reduced by providing a snapshot copy facility in the data storage system. This snapshot copy facility is useful for other applications, such as transaction processing and debugging.
In accordance with a first aspect of the invention, there is provided a method of maintaining in data storage of a data storage system a snapshot copy of a production data set including a multiplicity of storage locations in the data storage. The production data set is accessible to a host processor for read/write access during maintenance of the snapshot copy. The snapshot copy includes data existing in the production data set at a time when the snapshot copy is created. The method includes the data storage system responding to a request from the host processor for a write operation upon a storage location of the production data set. The data storage system responds by checking whether or not the storage location of the production data set has been modified since the time when the snapshot copy was created, and upon finding that the storage location of the production data set has not been modified since the time when the snapshot copy was created, copying data from the storage location of the production data set to an allocated storage location of the snapshot copy, and after copying data from the storage location of the production data set to the allocated storage location of the snapshot copy, performing the write operation upon the storage location of the production data set.
In accordance with another aspect, the invention provides a method of maintaining in data storage of a data storage system a snapshot copy of a production data set including a multiplicity of storage locations in the data storage. The production data set is accessible to a host processor for read/write access during maintenance of the snapshot copy. The snapshot copy includes data existing in the production data set at a time when the snapshot copy is created. The method includes the data storage system allocating to the snapshot copy a bit map for the data set and a list of pointers, the bit map including a bit for each storage location of the production data set to indicate whether or not each storage location has been modified since the time when the snapshot copy is created. The method further includes the data storage system responding to a request from the host processor for a write operation upon a storage location of the production data set. The data storage system responds by checking the bit in the bit map for the storage location of the production data set to determine whether or not the storage location of the production data set has been modified since the time when the snapshot copy was created, and upon finding that the storage location of the production data set has not been modified since the time when the snapshot copy was created, allocating a storage location to the snapshot copy, copying data from the storage location of the production data set to the allocated storage location of the snapshot copy, placing a pointer to the allocated storage location of the snapshot copy on the list of pointers allocated to the snapshot copy, changing the bit in the bit map for the storage location of the production data set, and after copying data from the storage location of the production data set to the allocated storage location of the snapshot copy, performing the write operation upon the storage location of the production data set.
In accordance with yet another aspect, the invention provides a data storage system including data storage and at least one data processor responsive to requests from a host processor for read/write access to a production data set including multiple storage locations in the data storage. The data processor is programmed to maintain in the data storage a snapshot copy of the production data set, the snapshot copy including data existing in the production data set at a time when the snapshot copy is created. Moreover, the data processor is programmed to respond to a request from the host processor for a write operation upon a storage location of the production data set by checking whether or not the storage location of the production data set has been modified since the time when the snapshot copy was created, and upon finding that the storage location of the production data set has not been modified since the time when the snapshot copy was created, copying data from the storage location of the production data set to an allocated storage location of the snapshot copy, and after copying data from the storage location of the production data set to the allocated storage location of the snapshot copy, performing the write operation upon the storage location of the production data set.
In accordance with still another aspect, the invention provides a data storage system including data storage and at least one data processor responsive to requests from a host processor for read/write access to a production data set including multiple storage locations in the data storage. The data processor is programmed to maintain in the data storage a snapshot copy of the production data set, the snapshot copy including data existing in the production data set at a time when the snapshot copy is created. The data processor is also programmed to allocate to the snapshot copy a bit map for the data set and a list of pointers, the bit map including a bit for each storage location of the production data set to indicate whether or not each storage location has been modified since the time when the snapshot copy is created. The data processor is further programmed to respond to a request from the host processor for a write operation upon a storage location of the production data set by checking the bit in the bit map for the storage location of the production data set to determine whether or not the storage location of the production data set has been modified since the time when the snapshot copy was created, and upon finding that the storage location of the production data set has not been modified since the time when the snapshot copy was created, allocating a storage location to the snapshot copy, copying data from the storage location of the production data set to the allocated storage location of the snapshot copy, placing a pointer to the allocated storage location of the snapshot copy on the list of pointers allocated to the snapshot copy, changing the bit in the bit map for the storage location of the production data set, and after copying data from the storage location of the production data set to the allocated storage location of the snapshot copy, performing the write operation upon the storage location of the production data set.
In accordance with a further aspect, the invention provides a program storage device containing a program for a data processor in a data storage system including data storage. The data processor is responsive to requests from a host processor for read/write access to a production data set including multiple storage locations in the data storage. The program is executable by the data processor for maintaining in the data storage a snapshot copy of the production data set, the snapshot copy including data existing in the production data set at a time when the snapshot copy is created. The program is also executable by the data processor for responding to a request from the host processor for a write operation upon a storage location of the production data set by checking whether or not the storage location of the production data set has been modified since the time when the snapshot copy was created, and upon finding that the storage location of the production data set has not been modified since the time when the snapshot copy was created, copying data from the storage location of the production data set to an allocated storage location of the snapshot copy, and after copying data from the storage location of the production data set to the allocated storage location of the snapshot copy, performing the write operation upon the storage location of the production data set.
In accordance with a final aspect, the invention provides a program storage device containing a program for a data processor in a data storage system including data storage. The data processor is responsive to requests from a host processor for read/write access to a production data set including multiple storage locations in the data storage. The program is executable by the data processor for maintaining in the data storage a snapshot copy of the production data set, the snapshot copy including data existing in the production data set at a time when the snapshot copy is created. The program is also executable by the data processor for allocating to the snapshot copy a bit map for the data set and a list of pointers, the bit map including a bit for each storage location of the production data set to indicate whether or not each storage location has been modified since the time when the snapshot copy is created. Moreover, the program is executable by the data processor for responding to a request from the host processor for a write operation upon a storage location of the production data set by checking the bit in the bit map for the storage location of the production data set to determine whether or not the storage location of the production data set has been modified since the time when the snapshot copy was created, and upon finding that the storage location of the production data set has not been modified since the time when the snapshot copy was created, allocating a storage location to the snapshot copy, copying data from the storage location of the production data set to the allocated storage location of the snapshot copy, placing a pointer to the allocated storage location of the snapshot copy on the list of pointers allocated to the snapshot copy, changing the bit in the bit map for the storage location of the production data set, and after copying data from the storage location of the production data set to the allocated storage location of the snapshot copy, performing the write operation upon the storage location of the production data set.